package me.lx

import android.app.Application
import android.content.Context
import android.graphics.Bitmap
import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.tencent.smtt.export.external.TbsCoreSettings
import com.tencent.smtt.sdk.QbSdk
import com.webuy.eureka.domainwhitelist.DomainWhitelistManager
import com.webuy.webview.WebViewHelper
import me.lx.tools.ConstTagTree
import me.lx.tools.RetrofitClient
import timber.log.Timber

/**
 *  author: luoXiong
 *  e-mail: 382060748@qq.com
 *  date: 2021/7/19 17:19
 *  version: 1.0
 *  desc:
 */
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        Timber.plant(ConstTagTree().setTag("luoxiong"))
        RetrofitClient.init()
        initWebViewHelper()
//        JlH5Container.init(RetrofitClient.getOkHttpClient(),object : WebViewImageLoadEngine{
//            override fun img2BitmapOnBackgroundThread(context:Context,url:String): Bitmap {
//                return Glide.with(context).asBitmap().diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
//            }
//        })
    }

    private fun initWebViewHelper() {
        DomainWhitelistManager.refreshWhitelistListener =
            object : DomainWhitelistManager.RefreshWhitelistListener {
                override fun onRefresh(domain: List<String>) = Unit
                override fun onError(e: Throwable) {
                    e.printStackTrace()
                }
            }
        WebViewHelper.init(
            this,
            DomainWhitelistManager.Config(
                retrofit = RetrofitClient.getRetrofit(),
                refreshInterval = 15 * 1000 * 60,
                refreshMode = DomainWhitelistManager.RefreshMode.FOREGROUND
            ),
            object : QbSdk.PreInitCallback {
                override fun onCoreInitFinished() {
                 //   Timber.d("x5内核初始化完成回调..6666...")
                    //x5内核初始化完成回调接口，此接口回调并表示已经加载起来了x5，有可能特殊情况下x5内核加载失败，切换到系统内核。
                }

                override fun onViewInitFinished(b: Boolean) {
                    //x5內核初始化完成的回调，为true表示x5内核加载成功，否则表示x5内核加载失败，会自动切换到系统内核。
                 //   Timber.d("加载内核是否成功:$b...77777....")
                }
            }
        )
    }

//    private fun initQbWebView() {
//        //初始化X5内核,通过服务去加载,避免ANR
//        val map = HashMap<String, Any>()
//        map[TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER] = true
//        map[TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE] = true // 通过服务去下载
//        QbSdk.initTbsSettings(map)
//        QbSdk.setDownloadWithoutWifi(true) // 非wifi也支持下载
//        //初始化X5内核
//        QbSdk.initX5Environment(this, object : QbSdk.PreInitCallback {
//            override fun onCoreInitFinished() {
//                Timber.d("x5内核初始化完成回调..6666...")
//                //x5内核初始化完成回调接口，此接口回调并表示已经加载起来了x5，有可能特殊情况下x5内核加载失败，切换到系统内核。
//            }
//
//            override fun onViewInitFinished(b: Boolean) {
//                //x5內核初始化完成的回调，为true表示x5内核加载成功，否则表示x5内核加载失败，会自动切换到系统内核。
//                Timber.d("加载内核是否成功:$b...77777....")
//            }
//        })
//    }
}